package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 红包领取详情实体类，记录每个红包被领取的具体信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "red_envelope_detail")
public class RedEnvelopeDetail {

    /**
     * 领取详情ID，主键。
     */
    @ApiModelProperty(value = "领取详情ID")
    private Long id;

    /**
     * 领取人ID，通常是用户ID。
     */
    @ApiModelProperty(value = "领取人ID")
    private Long memberId;

    /**
     * 红包ID，关联到红包实体。
     */
    @ApiModelProperty(value = "红包ID")
    private Long envelopeId;

    /**
     * 领取数额，用户实际领取的金额。
     */
    @ApiModelProperty(value = "领取数额")
    private BigDecimal amount = BigDecimal.ZERO;

    /**
     * 是否机器人，0表示不是，大于1表示是。
     */
    @ApiModelProperty(value = "是否机器人，0：不是，>1：是")
    private int cate = 0;

    /**
     * 领取时间，自动记录领取操作发生的时间。
     */
    @ApiModelProperty(value = "领取时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 领取人的邀请码，用于追踪推广效果，非持久化字段。
     */
    @ApiModelProperty(value = "领取人的邀请码")
    private String promotionCode;

    /**
     * 用户领取标识，可以是手机号或邮箱地址。
     */
    @ApiModelProperty(value = "用户领取标识，可以是手机号或邮箱地址")
    private String userIdentify;
}
